package com.custom.jdbc.handler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 类型处理器
 * @author  Xiao-Bai
 * @since  2022/11/12 0:11
 */
public interface TypeHandler<T> {

    Logger logger = LoggerFactory.getLogger(TypeHandler.class);

    /**
     * 获取本类型的值
     */
    T getTypeValue(Object val) throws Exception;


    /**
     * 获取结果集中的值
     * @param rs
     * @param column 列名
     * @return
     */
    T getTypeValue(ResultSet rs, String column) throws Exception;


    /**
     * 获取结果集中的值
     * @param rs
     * @param index 第几列
     * @return
     */
    T getTypeValue(ResultSet rs, int index) throws Exception;


    /**
     * 设置参数值
     * @param index 第几列
     * @param val 值(需要注意判断val是否为空，以及null时的处理，也就说val为null也要set一个值，至少是默认值)
     */
    void setTypeValue(PreparedStatement statement, int index, T val) throws Exception;




}
